// #include<iostream>
// #include<cstdlib>
// #include<unistd.h>
// #include<sys/types.h>
// #include<sys/wait.h>


// int main()
// {
//     pid_t id = fork();
//     if(id == 0)
//     {
//         //printf("I am running...\n");
//         int* p = NULL;
//         *p = 100;
//         exit(0);
//     }
//     int status = 0;
//     waitpid(id, &status, 0);
//     printf("exitcode: %d, coreDump:%d, signal: %d\n", (status >> 8) & 0xff, (status >> 7) & 1, status & 0x7f);
//     return 0;
// }

// #include <stdio.h>
// #include <stdlib.h>
// #include <unistd.h>
// #include <sys/wait.h>
// #include <sys/types.h>

// int main()
// {
// 	if (fork() == 0){
// 		//child
// 		printf("I am running...\n");
// 		int *p = NULL;
// 		*p = 100;
// 		exit(0);
// 	}
// 	//father
// 	int status = 0;
// 	waitpid(-1, &status, 0);
// 	printf("exitCode:%d, coreDump:%d, signal:%d\n",
// 		(status >> 8) & 0xff, (status >> 7) & 1, status & 0x7f);
// 	return 0;
// }

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<signal.h>
// void handler(int signo)
// {
//     printf("get a signal: %d\n", signo);
// }
void Usage(char* proc)
{
    printf("Usage: %s pid signo\n", proc);
}
int main(int argc, char* argv[])
{
    printf("argc: %d\n", argc);
    if(argc != 3)
    {
        Usage(argv[0]);
        return 1;
    }
    pid_t pid = atoi(argv[1]);
    int signo = atoi(argv[2]);
    kill(pid, signo);
    return 0;
}